package constants

import "net/http"

// 预定义常见业务错误
var (
	Ok              = NewCodeStatus(http.StatusOK, "操作成功")
	Err             = NewCodeStatus(http.StatusInternalServerError, "操作失败")
	ErrInvalidParam = NewCodeStatus(452, "请求参数验证错误")
)

// CodeStatus
// Title 			CodeStatus
// Description 		业务错误码结构体
// Author      		alittlexincan@163.com       						2024/07/22 11:36
// Update  			alittlexincan@163.com       						2024/07/22 11:36
type CodeStatus struct {
	code    int    // 错误码
	message string // 错误信息
}

// NewCodeStatus
// Title 			NewCodeStatus
// Description 		创建业务错误码结构体
// Author      		alittlexincan@163.com       						2024/07/22 11:36
// Param    		code 						int						错误码
// Param    		message 					string					错误信息
// Return    		*CodeStatus											返回业务错误码结构体
func NewCodeStatus(code int, message string) *CodeStatus {
	return &CodeStatus{
		code:    code,
		message: message,
	}
}

// WithCode
// Title 			WithCode
// Description 		设置错误码
// Author      		alittlexincan@163.com       						2024/07/22 11:36
// Update  			alittlexincan@163.com       						2024/07/22 11:36
// Param    		code 						int						错误码
// Return    		*CodeStatus											返回业务错误码结构体
func (cs *CodeStatus) WithCode(code int) *CodeStatus {
	cs.code = code
	return cs
}

// WidthMessage
// Title 			WidthMessage
// Description 		设置错误信息
// Author      		alittlexincan@163.com       						2024/07/22 11:36
// Update  			alittlexincan@163.com       						2024/07/22 11:36
// Param    		message 					string					错误信息
// Return    		*CodeStatus											返回业务错误码结构体
func (cs *CodeStatus) WidthMessage(message string) *CodeStatus {
	cs.message = message
	return cs
}

// Code
// Title    		Code
// Description   	获取错误码
// Author      		alittlexincan@163.com         				2024/07/22 11:36
// Update      		alittlexincan@163.com         				2024/07/22 11:36
// Return    		int											返回错误码
func (cs *CodeStatus) Code() int {
	return cs.code
}

// Message
// Title    		Message
// Description   	获取错误信息
// Author      		alittlexincan@163.com         				2024/07/22 11:36
// Update      		alittlexincan@163.com         				2024/07/22 11:36
func (cs *CodeStatus) Message() string {
	return cs.message
}
